﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Capa_Entidad;
using Capa_Negocio_Interface;
using Capa_Negocio_Facade;

public partial class Ventas_wfCitaListado : System.Web.UI.Page
{
    private IFacadeRegistrarCita objFacadeCita;
    private static List<V_Adm_Cita> ListaCitasVista = null;
    private static List<ADM_CITA> ListaCitas = null;
    private static String msg, titulo;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //ASPxButton3.Attributes.Add("language", "javascript");
            //ASPxButton3.Attributes.Add("onclick", "ShowMensaje();");
            //ASPxButton3.Attributes.Add("onclick", "return confirm('Esta Seguro de Elimanr el Registro seleccionado?');");
            if (Session["Grabacion"] != null)
            {
                titulo = (Convert.ToBoolean(Session["Grabacion"])) ? "Grabacion Exitosa" : "ERROR";
                msg = Session["msg"].ToString();
                Session["Grabacion"] = null;
                MostrarComentario(msg, titulo);
            }
            dgListadoCita.GroupBy(dgListadoCita.Columns["CIT_FECHA"]);
            dgListadoCita.GroupBy(dgListadoCita.Columns["ESP_NOMBRE"]);
            dgListadoCita.GroupBy(dgListadoCita.Columns["NombreEmpleado"]);
        }
        Cargar_Listado();
      
        
    }

    private void Cargar_Listado()
    {
        try
        {
            ListaCitasVista = new List<V_Adm_Cita>();
            objFacadeCita = new FacadeRegistrarCita();
            ListaCitasVista = objFacadeCita.listarVista();
            dgListadoCita.DataSource = ListaCitasVista;
            dgListadoCita.DataBind();
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL CARGAR LAS CITAS";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    protected void AgregarCita(object sender, EventArgs e)
    {
        Session["Operacion"] = "C";//C de Crear
        Response.Redirect("wfCita.aspx", true);
    }

    protected void ModificarCita(object sender, EventArgs e)
    {
        try
        {
            ValidarCita("M");
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL MODIFICAR LA CITA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    protected void EliminarCita(object sender, EventArgs e)
    {
        try
        {
            ValidarCita("E");
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL ELIMINAR LA CITA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void ValidarCita(String operacion)
    {
        try
        {
            Session["Operacion"] = operacion;
            int index = dgListadoCita.FocusedRowIndex;
            if (index == -1)
            {
                titulo = "Mensaje";
                msg = "Debe Seleccionar Una Cita";
                MostrarComentario(msg, titulo);
                return;
            }

            int idcita = Convert.ToInt32(dgListadoCita.GetRowValues(index, "CIT_ID_CITA").ToString());
            Session["IDCita"] = idcita;

            switch (operacion)
            {
                case "M":
                    Modificar_Cita(idcita);
                    break;
                case "E":
                    Eliminar_Cita(idcita);
                    break;                   
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL VALIDAR LA CITA SELECCIONADA.";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void Modificar_Cita(int idcita)
    {
        try
        {
            ListaCitas = new List<ADM_CITA>();
            objFacadeCita = new FacadeRegistrarCita();
            ListaCitas = objFacadeCita.listarCitas(idcita);

            if (ListaCitas == null)
            {
                titulo = "Mensaje";
                msg = "Error Al Modificar La Cita Seleccionada. Por Favor Escoja Otra Cita.";
                MostrarComentario(msg, titulo);
                return;
            }

            Session["CodPaciente"] = ListaCitas[0].ADM_PACIENTE.PAC_CODIGO_PACIENTE;
            Response.Redirect("wfCita.aspx", false);
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL MODIFICAR LA CITA SELECCIONADA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }

    private void Eliminar_Cita(int idcita)
    {
        try
        {
            ADM_CITA Ent_AdmCita = new ADM_CITA();
            //la cita se puede eliminar si es que el estado no tiene una atencion realizada
            //sino deberia eliminarse normal liberando la progranacion medica

            ATE_ATENCION objAte_Atencion = new ATE_ATENCION();
            Ent_AdmCita.CIT_ID_CITA = idcita;
            objAte_Atencion.ATE_ID_ATENCION = idcita;

            if (objFacadeCita.EliminarCita(Ent_AdmCita))
            {
                Boolean ok = objFacadeCita.EliminarAtencion(objAte_Atencion);
                Cargar_Listado();
                titulo = "Mensaje";
                msg = "Cita Eliminada";
                MostrarComentario(msg, titulo);
            }
            else
            {
                titulo = "Mensaje";
                msg = "ERROR : No Se pudo Eliminar la Cita";
                MostrarComentario(msg, titulo);
            }
        }
        catch (Exception ex)
        {
            titulo = "ERROR AL ELIMINAR LA CITA SELECCIONADA";
            msg = ex.Message;
            MostrarComentario(msg, titulo);
        }
    }
    
    private void MostrarComentario(String msg, String titulo)
    {
        pcMensaje.HeaderText = titulo;
        lblMensaje.Text = msg;
        ScriptManager.RegisterStartupScript(this, typeof(Page), "scriptkey", "pcMensaje.Show();", true);
    }


    private void vacio()
    {

        /*
           protected void ModificarCita(object sender, EventArgs e)
        {
            try
            {
                Session["Operacion"] = "M";//M de Modificar
                int index = dgListadoCita.VisibleRowCount;
                if (index == 0)
                {
                    //Util.showmsg("No hay Informacion!!!", this.Page);
                    titulo = "Mensaje";
                    msg = "No Hay Informacion";
                    MostrarComentario(msg, titulo);
                    return;
                }


                int idcita = Convert.ToInt32(dgListadoCita.GetRowValues(index, "CIT_ID_CITA"));
                //Session["IDCita"] = 0;
                //Session["IDCita"] = dgListadoCita.GetRowValues(index, "CIT_ID_CITA");

                if (idcita == -1)
                {
                    //Util.showmsg("Seleccione un Registro!!!", this.Page);
                    titulo = "Mensaje";
                    msg = "Seleccione Un Registro";
                    MostrarComentario(msg, titulo);
                    return;
                }
                Session["IDCita"] = idcita;

                ValidarCita("M");
                return;
            
                ListaCitas = new List<ADM_CITA>();
                objFacadeCita = new FacadeRegistrarCita();
                ListaCitas = objFacadeCita.listarCitas(idcita);

                if (ListaCitas == null)
                {
                    titulo = "";
                    msg = "";
                    MostrarComentario(msg, titulo);
                    return;
                }
                Session["CodPaciente"] = ListaCitas[0].ADM_PACIENTE.PAC_CODIGO_PACIENTE;
                Response.Redirect("wfCita.aspx", false);

                //clsAdmCitaBL BL_AdmCita = new clsAdmCitaBL();


                //var c = from p in objFacadeCita.listarCitas()
                //        where p.CIT_ID_CITA == (Int32)Session["IDCita"]
                //        select p;


                //foreach (var S in c)
                //{
                //    Session["CodPaciente"] = (String)S.ADM_PACIENTE.PAC_CODIGO_PACIENTE;

                //}

            }
            catch (Exception ex)
            {
                titulo = "ERROR AL MODIFICAR LA CITA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        protected void EliminarCita(object sender, EventArgs e)
        {
            try
            {
                Session["Operacion"] = "E";//E de Eliminar
                int index = dgListadoCita.FocusedRowIndex;
                if (index == -1)
                {
                    //Util.showmsg("No hay registro seleccionado!!!", this.Page);
                    titulo = "Mensaje";
                    msg = "No hay registro seleccionado";
                    MostrarComentario(msg, titulo);
                    return;
                }
                int idcita = Convert.ToInt32(dgListadoCita.GetRowValues(index, "CID_ID_CITA"));
                Session["IDCita"] = idcita;


                ADM_CITA Ent_AdmCita = new ADM_CITA();
                //la cita se puede eliminar si es que el estado no tiene una atencion realizada
                //sino deberia eliminarse normal liberando la progranacion medica

                ATE_ATENCION objAte_Atencion = new ATE_ATENCION();
                Ent_AdmCita.CIT_ID_CITA = idcita;
                objAte_Atencion.ATE_ID_ATENCION = idcita;

                if (objFacadeCita.EliminarCita(Ent_AdmCita))
                {
                    Boolean ok = objFacadeCita.EliminarAtencion(objAte_Atencion);
                    Cargar_Listado();

                    //Util.showmsg("Cita Eliminada!!!", this.Page);
                    titulo = "Mensaje";
                    msg = "Cita Eliminada";
                    MostrarComentario(msg, titulo);
                    //Response.Redirect("wfCitaListado.aspx", true);
                }
                else
                {
                    //Util.showmsg("Error: No Se pudo Eliminar la Cita", this.Page);
                    titulo = "Mensaje";
                    msg = "ERROR : No Se pudo Eliminar la Cita";
                    MostrarComentario(msg, titulo);
                }
            }
            catch (Exception ex)
            {
                titulo = "ERROR AL ELIMINAR LA CITA";
                msg = ex.Message;
                MostrarComentario(msg, titulo);
            }
        }

        */
    }
}